#!/usr/bin/env python
# Unix 风格的 shebang 行，指定使用 Python 解释器执行此脚本。
# 在 Unix 或类 Unix 系统中直接运行脚本时，系统会依据该行找到对应的 Python 解释器。

# 导入 sys 模块，用于操作 Python 解释器和运行时环境
import sys
# 导入 os 模块，用于与操作系统进行交互，如文件路径操作和环境变量设置
import os

# 获取当前脚本的绝对路径
current_script_path = os.path.abspath(__file__)
# 获取当前脚本所在的目录
current_script_dir = os.path.dirname(current_script_path)
# 计算项目根目录，假设项目根目录为当前脚本目录的上一级
project_root = os.path.abspath(os.path.join(current_script_dir, '..'))
# 打印项目根目录路径，方便调试
print(project_root)

# 将项目根目录添加到 sys.path 列表的首位，
# 使 Python 解释器在查找模块时优先从该目录搜索
sys.path.insert(0, project_root)

# 设置 Django 项目的配置模块
# os.environ 是一个表示环境变量的字典
# setdefault 方法会检查 DJANGO_SETTINGS_MODULE 环境变量是否存在
# 若不存在，则将其设置为 meiduo_mall.settings，这是 Django 项目的配置文件
# Django 会依据该配置文件加载项目的各项设置
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings")

# 导入 Django 框架的核心模块
import django
# 调用 django.setup() 函数初始化 Django 环境
# 该函数会加载 DJANGO_SETTINGS_MODULE 指定的配置文件，
# 完成数据库连接初始化、应用程序加载等操作，
# 确保脚本中能正常使用 Django 的功能，如访问模型、使用模板等
django.setup()


from django.views import View
from django.http import JsonResponse
from utils.views import LoginRequiredJSONMixin
from apps.goods.models import GoodsCategory,SKU
from utils.goods import get_breadcrumb, get_categories,get_goods_specs
def generate_static_sku_detail_html(sku):
    # try:
    #     sku = SKU.objects.get(id=sku_id)
    # except SKU.DoesNotExist:
    #     return JsonResponse({'code':400,'errmsg':'sku_id不存在'})
    # 1. 分类数据
    categories = get_categories()
    # 2. 面包屑
    breadcrumb = get_breadcrumb(sku.category)
    # 3. SKU信息

    # 4. 商品规格信息
    specs = get_goods_specs(sku)
    # 5. 组织数据
    context = {
        'categories':categories,
        'breadcrumb':breadcrumb,
        'sku':sku,
        'specs':specs
    }
    # return render(request,'detail.html',context)
    # 1. 加载html模板
    from django.template import loader
    temp = loader.get_template('detail.html')
    # 2. 渲染html模板
    detail_html = temp.render(context)
    # 3. 将渲染好的模板放入指定文件目录
    import os
    from django.conf import settings
    # 生成静态文件的路径
    file_path = os.path.join(os.path.dirname(settings.BASE_DIR), 'front_end_pc/goods/'+str(sku.id)+'.html')
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(detail_html)

skus = SKU.objects.all()
for sku in skus:
    generate_static_sku_detail_html(sku)